package com.kaifamiao.month03.day0324;

public class Sum {

    public static void main(String[] args) {
        System.out.println(sum());
    }

    /**
     * 把分子放在一个数组中，找到最小公倍数作为分子，分母的值 = 最小公倍数 / 分子 * 原分母
     * @return 计算之后的分母的值 / 最小公倍数
     */
    public static String sum(){
        int[] nums = new int[9];
        for(int i = 1; i < 10; i ++){
            nums[i - 1] = (i + 1);
        }
        int multiple = commonMultiples2(nums); // 最小公倍数
        int n = 0; // 分母上的数字
        for (int num : nums) {
            n += multiple / num * (num - 1);
        }
        return n + " / " + multiple;
    }

    /**
     * 寻找最大公约数
     * @param prev 第一个数字
     * @param next 第二个数字
     * @return 找到的最大公约数
     */
    public static int commonDivisor(int prev, int next){
        int min = prev < next ? prev : next;
        for(int divisor = min; divisor > 0; divisor --){
            if(prev % divisor == 0 && next % divisor == 0){
                return divisor;
            }
        }
        return 1;
    }

    /**
     * 计算最小公倍数
     * @param nums 需要查找的数组
     * @return 找到的最小公倍数
     */
    public static int commonMultiples2(int[] nums){
        int result = nums[0];
        for(int i = 0; i < nums.length - 1; i ++){
            result = (result* nums[i + 1]) / commonDivisor(result,nums[i + 1]);
        }
        return result;
    }
}
